parser grammar AnasintXML;

options {
	tokenVocab = AnalexXML;
}

document : biblioteca;
    

//ATRIBUTO
atributo  : ATTRID ATTRIGUAL ATTRVALOR;

// BIBLIOTECA
biblioteca : abrir_biblioteca (libro)+ cerrar_biblioteca;
	
cerrar_biblioteca : TAG_EMP_FIN_ETIQ BIBLIOTECA TAG_CIERRA_ETIQ {System.out.println("Sale de Biblioteca");}	;	
	
abrir_biblioteca :  TAG_EMP_ETIQ BIBLIOTECA (ATRIBUTO)* TAG_CIERRA_ETIQ;	

//LIBRO
libro: abrir_libro (DATOS)* titulo autor editorial cerrar_libro;
	
abrir_libro : TAG_EMP_ETIQ LIBRO (ATRIBUTO)* TAG_CIERRA_ETIQ;

cerrar_libro : TAG_EMP_FIN_ETIQ LIBRO TAG_CIERRA_ETIQ {System.out.println("Sale de Libro");};	

//TITULO
titulo : abrir_titulo DATOS cerrar_titulo;
	
abrir_titulo : TAG_EMP_ETIQ TITULO TAG_CIERRA_ETIQ;

cerrar_titulo : TAG_EMP_FIN_ETIQ TITULO TAG_CIERRA_ETIQ {System.out.println("Sale de Titulo");};	
	
//AUTOR
autor : abrir_autor DATOS cerrar_autor;

abrir_autor : TAG_EMP_ETIQ AUTOR TAG_CIERRA_ETIQ;

cerrar_autor : TAG_EMP_FIN_ETIQ AUTOR TAG_CIERRA_ETIQ {System.out.println("Sale de Autor");};

//EDITORIAL
editorial : abrir_editorial DATOS cerrar_editorial;
		
abrir_editorial : TAG_EMP_ETIQ EDITORIAL TAG_CIERRA_ETIQ;

cerrar_editorial : TAG_EMP_FIN_ETIQ EDITORIAL TAG_CIERRA_ETIQ {System.out.println("Sale de Editorial");};
